﻿namespace NTLib.Pipe
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    /// <summary>
    /// Provide functionalities specific for the pipe owner.
    /// Like close the pipe.
    /// </summary>
    /// <typeparam name="T">Data type pass through the pipe.</typeparam>
    public interface IPipeOwner
    {
        #region  Methods

        /// <summary>
        /// Closes the pipe.
        /// </summary>
        Task ClosePipeAsync();

        #endregion
    }

    /// <summary>
    /// Define a cumul of the pipe manipulator and the pipe owner
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IPipeManipulatorOwner<T> : IPipeManipulator<T>, IPipeOwner
    {

    }
}
